package com.itheima.hello.hello入门进阶.JavaBean封装.基础知识;

import com.itheima.hello.hello入门进阶.JavaBean封装.基础知识.Student;
import com.itheima.hello.hello入门进阶.JavaBean封装.基础知识.studentOp;

public class Test {
    public static void main(String[] args) {
        Student s = new Student("絮康", 58, 59.5, 20);
        studentOp ss = new studentOp(s);
        ss.printDetail();
        ss.avgScore();
        ss.totalScore();
        ss.printPass();

        //Student类里面写了有参构造器，
        // 所以在实例化一个学生类的时候同时可以为其属性（变量）初始化及赋值
        //如果某个类只有一个成员变量即属性而且还要是公共的，可以不用定义有参构造器，创建类是java默认会自动生成一个无参构造器
        //如果创建了一个有参构造器，则java不会自动生成一个无参构造器


        Student s1 = new Student("李华", 100, 98, 21);
        studentOp ss1 = new studentOp(s1);
        ss1.printDetail();
        ss1.avgScore();
        ss1.totalScore();
        ss1.printPass();
        //为了以后在某种只需要实例化一个该对象但是不需要给成员变量（属性）初始化的场景中使用Student s2 = new Student();来实例化一个对象
        //则一定要在类中创建有参构造器后在创建一个无参构造器,因为自己创建一个有参构造器后java不会在默认生成一个无参构造器!!!
        System.out.println("------------------------");
        Student s2 = new Student();
        System.out.println("以下是打印三个实例化对象的地址");
        System.out.println(s);  //像这种只是存储实例化对象的地址而不是存储数据的变量成为--引用变量
        System.out.println(s1);
        System.out.println(s2);
        System.out.println("------------------------");
        System.out.println("以下是访问实例化对象中的公共成员变量(属性) name:");
        System.out.println(s.name);
        System.out.println(s1.name);
        System.out.println("------------------------");
        System.out.println("以下是只实例化一个Student对象但是没有进行成员变量(属性)初始化:");
        System.out.println(s2.name);
        s2.setChinese(-10); //设置语文成绩为负数 -10  在set（）方法中写入筛选条件
        s2.setEnglish(105); //设置英语成绩为大于100的数 105  在set（）方法中写入筛选条件
        System.out.println(s2.getAge());
        System.out.println(s2.getChinese());
        System.out.println(s2.getEnglish());

    }

}
